package com.ht.api.db.bean;

import com.ht.api.db.DbList;
import com.ht.api.db.Entity;

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

/**
 * 接口数据存放的容器
 * @author asq
 * @createTime 2025年4月17日 14:04:49
 */
public class DataResult {
	private static final String DATA = "data";
	private JSONObject data = JSONUtil.createObj();
	private String msg;

	public static DataResult create() {
		return new DataResult();
	}

	/**
	 * 存放一个键值对
	 * @param key
	 * @param value
	 */
	public void set(String key, Object value) {
		data.putByPath(DATA + "." + key, value);
	}

	/**
	 * 存放一个对象
	 * @param value
	 */
	public void set(Object value) {
		data.set(DATA, value);
	}
	
	/**
	 * 设置展示给前端的消息文本
	 * @param msg
	 */
	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	/**
	 * 获取展示给前端的消息文本
	 * @return
	 */
	public String getMsg() {
		return this.msg;
	}
	
	/**
	 * 返回容器存放的对象
	 * @return
	 */
	public Object getData() {
		return data.get(DATA);
	}
	
	/**
	 * 返回包含的查询数据列表
	 * @return
	 */
	public DbList getRecords() {
		JSONArray arr = data.getByPath(DATA + ".record", JSONArray.class);
		DbList list = DbList.create();
		for (int i = 0; i < arr.size(); i++) {
			list.add((Entity)arr.getObj(i));
		}
		return list;
	}

	/**
	 * 返回存放数据的格式化json串
	 * @return
	 */
	public String getJsonString() {
		return JSONUtil.toJsonPrettyStr(data.get(DATA));
	}

	public static void main(String[] args) {
		DataResult result = DataResult.create();
		result.set(JSONUtil.createArray().set("111"));
		result.set("a", "1");
		result.set("b", "2");
		System.err.println(result.getJsonString());
	}

}
